package controller;

import observer.Observer;
import observer.Subject;
import view.IHM;
import model.MoteurMetronomeImpl;

public class ControllerImpl implements Controller, Observer{

	private MoteurMetronomeImpl moteurM;
	private IHM ihm;
	private int v;
	private  double t;

	public ControllerImpl(MoteurMetronomeImpl mmi, IHM ihm){
		this.moteurM = mmi;
		this.ihm = ihm;
	}

	public void dec() {
		if(moteurM.getTempsParMesure() > 2){
			moteurM.setTempsParMesure(-1);
		}
	}

	public void inc() {
		if(moteurM.getTempsParMesure() < 7){
			moteurM.setTempsParMesure(1);
		}
	}

	public void start() {
		moteurM.setEtatMarche(true);
	}

	public void stop() {
		moteurM.setEtatMarche(false);
		moteurM.setTempo(0);
	}

	public void marquerTemps(){
		ihm.allumerLED(1);
		ihm.emettreClic();
	}

	public void updateByIHM(Subject s) {
		IHM ihm = (IHM) s;
		v = (int) ihm.position();
		System.out.println("Valeur v : " + v);
		ihm.afficherTempo((int)t);
	}

	public void updateByMoteurMetronome(Subject s) {
		MoteurMetronomeImpl moteur = (MoteurMetronomeImpl) s;
		// pour avoir un nombre en 0.0 et 1.0
		moteur.setTempo(v / 100-0);
		t = moteur.getTempo();
	}


}
